package org.wdcode.back.po;

import java.io.Serializable;

import org.wdcode.back.helper.CompanyHelper;
import org.wdcode.back.helper.DepartmentHelper;
import org.wdcode.back.helper.UserHelper;
import org.wdcode.common.tools.Conversion;
import org.wdcode.common.util.CommonUtil;

/**
 * 部门实体
 * @author WD
 * @since JDK6
 * @version 1.0 2009-11-23
 */
public final class Department extends BaseBackStateEntityBean implements Serializable {
	// 序列化ID
	private static final long	serialVersionUID	= 7406982095330057243L;

	// 所属公司ID
	private Integer				companyId;
	// 上级部门ID
	private Integer				departmentId;
	// 管理人ID
	private Integer				userId;

	// 公司实体
	private Company				company;
	// 部门实体
	private Department			department;
	// 用户实体
	private User				user;

	/**
	 * 获得公司实体
	 * @return 公司实体
	 */
	public Company getCompany() {
		return CommonUtil.isEmpty(company) ? setCompany(companyId) : company;
	}

	/**
	 * 设置公司实体
	 * @param companyId 公司ID
	 * @return 公司实体
	 */
	public Company setCompany(Integer companyId) {
		return company = CompanyHelper.getHelper().get(Conversion.toInt(companyId));
	}

	/**
	 * 获得上级部门实体
	 * @return 上级部门实体
	 */
	public Department getDepartment() {
		return CommonUtil.isEmpty(department) ? setDepartment(departmentId) : department;
	}

	/**
	 * 设置上级部门实体
	 * @param departmentId 部门ID
	 * @return 上级部门实体
	 */
	public Department setDepartment(Integer departmentId) {
		return department = DepartmentHelper.getHelper().get(Conversion.toInt(departmentId));
	}

	/**
	 * 设置管理人实体
	 * @param userId 管理人ID
	 * @return 管理人实体
	 */
	public User setUser(Integer userId) {
		return user = UserHelper.getHelper().get(Conversion.toInt(userId));
	}

	/**
	 * 获得管理人实体
	 * @return 管理人实体
	 */
	public User getUser() {
		return CommonUtil.isEmpty(user) ? setUser(userId) : user;
	}

	/**
	 * 获得所属公司ID
	 * @return 所属公司ID
	 */
	public Integer getCompanyId() {
		return this.companyId;
	}

	/**
	 * 设置所属公司ID
	 * @param companyId 所属公司ID
	 */
	public void setCompanyId(Integer companyId) {
		this.companyId = companyId;
	}

	/**
	 * 获得上级部门ID
	 * @return 上级部门ID
	 */
	public Integer getDepartmentId() {
		return this.departmentId;
	}

	/**
	 * 设置上级部门ID
	 * @param belong 上级部门ID
	 */
	public void setDepartmentId(Integer belong) {
		this.departmentId = belong;
	}

	/**
	 * 获得管理人ID
	 * @return 管理人ID
	 */
	public Integer getUserId() {
		return this.userId;
	}

	/**
	 * 管理人ID
	 * @param userId 管理人ID
	 */
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
}